第 7 章  ·  需求分析与流程

第7章 第10节 需求分析与流程


第7章 第10节 需求分析与流程

阅读指南

本节不再讲概念,而是从零开始实现一个游戏装备计算助手。先做需求分析和交互流程设计,搞清楚要做什么、怎么运转。

10.1 需求分析:从玩家痛点出发

项目目标

在 RPG 或 MOBA 类游戏中,玩家常面临复杂的装备属性抉择:这把新武器比旧的强多少?换了这件装备,总伤害能提升几成?传统的做法是查攻略或拉 Excel 表格,既繁琐又不直观。

我们的目标是打造一个「游戏助手」,让玩家只需通过自然语言提问,即可获得精准的数值计算与对比建议。

理想的交互体验

你:"这把「破晓之剑」比我现在的武器强多少?"

AI:"让我帮你计算一下……
     破晓之剑:基础攻击 674,相比当前武器提升了 32.2%。
     算上暴击加成,总伤害预计提升约 40%。建议更换!"

这就是我们要做的事情。

为什么需要 MCP

我们可能会疑惑,让AI学会计算游戏数值就好了,为什么要用MCP?

让我们对比两种实现方式。

方案A:纯提示词方案(不用MCP)

你:帮我算一下破晓之剑的总伤害

AI:要计算总伤害,需要基础攻击力、暴击率、
    暴击伤害等数据。请问这把武器的具体
    属性是……(开始问一堆问题)

或者,AI干脆会给你一个公式,让你自己去计算。

问题在于:

[×] AI不知道装备数据,你得手动输入
[×] 每次查询都要重复说明装备属性
[×] AI没有"记忆",无法对比多件装备

方案B:MCP方案(我们要做的)

这就是MCP的价值: 它让AI从"会说"变成"会做"。更重要的是,你可以把这个MCP发布出去,让其他的AI应用也可以使用你的MCP Server。

我们要实现什么

基于上面的分析,我们的目标很明确:

项目定位:游戏装备计算助手

具体来说,玩家可以:

1. 查询装备属性

"破晓之剑有什么属性?"
→ 通过Resources查询装备数据,返回详细属性

2. 计算战斗数值

"我用破晓之剑打史莱姆能造成多少伤害?"
→ 调用伤害计算工具,返回准确结果

3. 对比装备性能

"破晓之剑和无锋重剑哪个更强?"
→ 调用对比分析工具,给出建议

完整交互流程:从 LLM 决策到最终输出

现在让我展示一个完整的交互流程图,看看用户问一个问题后,系统是如何一步步地处理并生成最终答案的:

完整流程解读

1. 用户提问阶段

2. LLM 决策阶段

3. MCP Server 执行阶段

4. LLM 生成阶段

5. 循环判断

6. 最终输出


核心要点

[✓] LLM 全程主导 - 自主决定调用哪些 MCP 能力
[✓] 自动循环 - 可多次调用,直到信息足够
[✓] 最终由 LLM 生成 - 保证输出自然流畅
[✓] MCP Server 只负责执行 - 不做决策,只提供数据/计算

不同场景下的调用次数示例

场景 1:调用 1 次 MCP

用户输入:「请查询装备"破晓之剑"的属性」
    ↓
LLM 分析:需要读取装备数据
    ↓
LLM 决定:调用 Resources
    ↓
调用 MCP:read_resource(weapon_破晓之剑) ← 第 1 次
    ↓
MCP 返回:装备卡片数据(类型、攻击、暴击等)
    ↓
LLM 判断:信息已足够
    ↓
生成答案:输出该装备的属性说明

总计:1 次 MCP 调用


场景 2:调用 3 次 MCP

用户问:"帮我详细分析破晓之剑,并推荐搭配的护甲"
    ↓
LLM 分析:需要分析模板
    ↓
LLM 决定:调用 Prompts
    ↓
调用 MCP:get_prompt(equipment_analysis) ← 第 1 次
    ↓
MCP 返回:分析模板(属性解读、适用场景、优缺点、搭配建议)
    ↓
LLM 判断:需要装备详细数据
    ↓
LLM 决定:调用 Resources
    ↓
调用 MCP:read_resource(weapon_破晓之剑) ← 第 2 次
    ↓
MCP 返回:破晓之剑完整属性
    ↓
LLM 判断:需要护甲数据用于搭配建议
    ↓
LLM 决定:调用 Resources
    ↓
调用 MCP:read_resource(armor_龙鳞甲) ← 第 3 次
    ↓
MCP 返回:龙鳞甲属性
    ↓
LLM 判断:信息已足够
    ↓
生成答案:完整的分析报告 + 搭配建议

总计:3 次 MCP 调用

用户问:"对比所有武器,给我推荐最适合暴击流的装备组合"
    ↓
LLM 分析:需要获取所有武器数据
    ↓
LLM 决定:调用 Resources
    ↓
调用 MCP:read_resource(weapon_破晓之剑) ← 第 1 次
调用 MCP:read_resource(weapon_无锋重剑) ← 第 2 次
调用 MCP:read_resource(weapon_疾风短刃) ← 第 3 次
    ↓
MCP 返回:3 件武器的完整属性
    ↓
LLM 判断:需要计算暴击收益
    ↓
LLM 决定:调用 Tools
    ↓
调用 MCP:calculate_damage(疾风短刃) ← 第 4 次
    ↓
MCP 返回:疾风短刃伤害详情(暴击率 75%)
    ↓
LLM 判断:需要护甲搭配
    ↓
LLM 决定:调用 Resources
    ↓
调用 MCP:read_resource(armor_暗影斗篷) ← 第 5 次
    ↓
MCP 返回:暗影斗篷属性
    ↓
LLM 判断:信息已足够
    ↓
生成答案:"暴击流推荐:疾风短刃(75% 暴击率)+ 暗影斗篷,
          总暴击收益最高..."

场景 3:调用 5 次 MCP

总计:5 次 MCP 调用


三种 MCP 能力的对比

能力 LLM 何时选择 适用场景
Resources 需要查询装备的详细信息 简单数据查询
Tools 需要计算、对比、复杂逻辑 复杂计算
Prompts 需要结构化分析模板 深度分析

10.2 下一节预告

需求分析和交互流程已经清楚了。接下来进入技术选型与实现环节——为什么 Server 用 Node.js、Client 用 Python?项目的整体架构和目录结构是怎样的?下一节将给出答案。

10.3 ■ 学点英语

中文 English 音标 说明
交互流程设计 Interaction Flow Design /ˌɪntərˈækʃn floʊ dɪˈzaɪn/ 设计用户、AI应用和MCP Server之间的多步交互流程
渐进式决策 Progressive Decision /prəˈɡresɪv dɪˈsɪʒn/ LLM在调用过程中持续观察结果,动态决定后续步骤
参数引导 Parameter Guidance /pəˈræmɪtər ˈɡaɪdns/ Prompt在参数缺失时主动询问用户补充的交互机制
资源调用计数 Resource Call Count /ˈriːsɔːrs kɔːl kaʊnt/ 完成一个用户需求所需的MCP调用次数统计

10.4 ■ 思考帧

传输与生命周期 技术选型与实现
本节目录